package filters;

import interfaces.IDoubleObject;
import interfaces.IMap;
import Markers.Map;

public class DoubleMap implements IMap,IDoubleObject<IMap>
{
	boolean offset=true;
	Map first;
	Map second;
	//===========================================================================
	public DoubleMap(int h, int w)
    {
		this.first = new Map(h, w);
		//this.second = new Map(h, w);    
    }
	//===========================================================================
	@Override
	public void Swap() 
	{
		offset=!offset;
		if(this.second==null)
			this.second = new Map(this.first.Height(), this.first.Width());
	}
	//===========================================================================
	public Map First()
	{
		return offset?first:second;
	}
	//===========================================================================
	public Map Second()
	{
		if(this.second==null)
			this.second = new Map(this.first.Height(), this.first.Width());
		return offset?second:first;
	}
	//===========================================================================
	@Override
	public int Height() 
	{		
		return this.First().Height();
	}
	//===========================================================================
	@Override
	public int Width() 
	{
		return this.First().Width();
	}
	//===========================================================================
	@Override
	public int Get(int x, int y) 
	{		
		return this.First().Get(x, y);
	}
	//===========================================================================
	@Override
	public void Set(int x, int y, int value) 
	{
		this.First().Set(x, y,value);
	}
	//===========================================================================	
}
